The present invention relates to Software and Hardware Inventory and Usage and more particularly to a method and process for displaying software product inventory and usage information correlated with license agreement information.
The invention builds upon the disclosure in the present assignees U.S. Pat. No. 5,499,340, the contents of which are incorporated by reference herein.
A variety of techniques are available for gathering and reporting on the inventory and usage of software products and the hardware (computers) that they are installed and execute upon.
In some environments (e.g., PC networks), software tools are available that conduct a survey to discover the computers and related hardware devices. Some of these same tools, as well as other products that do not do such a hardware survey, also survey the executable software programs (“modules,” “executable files”) on a computer or a network of computers and then automatically identify (on the basis of a knowledge base of file names, identifying strings, “footprints,” etc.) which software products they comprise.
Yet other tools allow users to specify products that users are installing or have installed, implicitly or explicitly indicating which programs they comprise. In addition, some of these tools identify the particular versions and/or releases found as well as what product suites each one belongs to. Such inventory information is often enhanced to include identification of the particular processor on which each product is installed, its physical location (by country, region, state, county, city, building, etc.) and organizational subdivisions (such as company, division, and department) with which the processor, the product, or the particular installation of the product is associated. Thereafter, such inventory information can be treated on a consolidated basis, with the ability to select and manipulate on the basis of such enhanced identification.
Using such a tool (or other such tools), the usage or execution of such software products (which have been automatically identified or manually specified by the user upon installation or at a later time) can be monitored. A variety of techniques are available to monitor the usage of other programs, including: intercepting the operating system component that manages or initiates program execution; making use of interfaces provided by the operating system for such purposes; “wrapping” or “prefacing” program modules with code to invoke or perform the monitoring functions; intercepting operating system logging activity; reading operating system logs after the fact; and other such techniques. A number of other tools are available that monitor such module usage without themselves relating modules to product identity.
Thereafter, a variety of product inventory and usage information can be displayed, printed, exported, etc. For example:                Installed products by processor and library        Installed products by vendor        Libraries by installed product, upon which each product is installed,        Product usage by product        Product usage by product and library        Product usage by user and product        Product usage by user, product, processor, and libraryLicense Agreements        
Other software tools exist that allow users to enter into a database information pertaining to contractual license agreements (“contracts,” “agreements”) for the user's software products.
This provides a convenient place to record such information as vendor or distributor, contact information, software and/or hardware products covered by the agreement, computers on which the software is authorized to run, number of authorized users, maintenance terms, renewal date, budgets and forecasts, invoice and payment history, key terms and conditions, links to electronic versions of documents, etc.
As license agreements are often interrelated in complex ways, such tools typically allow the user to organize and identify these agreements in terms of master agreements, sub-agreements, addenda, etc. Some such products also provide: automated “alerts” (signals that an important event is occurring); financial capabilities such as chargebacks, links to accounting systems, etc.; information about vendor Internet address (allowing the user to automatically open a browser and display information from the vendor's Web site); and other capabilities.
Existing software tools which offer asset management capabilities include ARGIS from Janus Technologies, The Contract Tickler from ARM Group and ContractManagement from Global Business Center. These existing products are not believed to provide linked associations of data from pre-existing repositories and many-to-many linkages. Nor do they provide reconciliation of data from multiple repositories in an automatic or substantially automatic fashion.
The Problem
Although both kinds of information—inventory and usage information on the one hand and agreement information on the other—are useful by themselves, they would be more meaningful and useful if they were integrated, related, coordinated, and reconciled.
For example, when the time comes to decide whether to renew a maintenance contract for a particular product from a particular vendor, it is highly desirable to be able to look at installation and usage information about that product. As another example, when looking at the usage patterns for a particular product, it is highly desirable to be able to look at the license agreement or agreements that pertain to it, for opportunities to save money by canceling a product or consolidating its usage onto fewer processors.
However, at present, using existing tools, it is awkward to relate the two types of information. The user must look up the contract in the license agreement tool and then manually lookup the corresponding inventory and usage information in the other tool (or vice versa).
With a single installation having hundreds of agreements, thousands of software products, and possibly tens of thousands of computers and users, this process can be laborious, repetitive, error-prone, expensive, and impractical. Time is often critical—if the information cannot be obtained and evaluated before a particular date (e.g., a deadline for canceling or renegotiating a contract), it is essentially useless.
The inability to cope with an unlimited quantity of such data in a reliable, timely and cost-effective way makes it impractical to perform such analysis and correlation for all vendors and all products on a regular basis—only those few occasions where the costs are high enough and the number of data items small enough to make it cost-justifiable.
Another problem in going back and forth between two unintegrated tools is the difficulty arising when reconciling items (such as a product, vendor, processor, user, etc.) named or treated differently in the two tools. Although the user can, of course, make a decision, for example, as to which product in one tool corresponds to which product in the other, each user must make such a decision on a case-by-case basis, and there is no convenient way to create an automatic linkage. This means that, for example, the next time the user pulls up the same information pertaining to a particular license agreement for a particular product, he or she will have to repeat the same process. Furthermore, other users of the same tools will each individually have to repeat the same process, possibly making different decisions.
Some tools may provide the ability to create multiple views (“windows”). The operating system itself may provide the capability to simultaneously use two or more unrelated programs simultaneously in multiple views (“windows”), which allows the user to use multiple tools, an inventory/usage tool in one window and a license agreement tool in another window. The user would be able to relate the information in one tool to the information in the other visually, and, perhaps even to cut information from one and copy it into the other. However, no tool allows the user to correlate the metrics of a license agreement with the actual (or proposed) operation of the software itself. Users would benefit if they were able to conveniently answer questions such as the following:
For each product found in inventory which agreement governs its use?
For all products found in inventory                which products have an agreement associated with them?        which products have no agreement associated with them?        
For all products meeting user-specified criteria (e.g., found on a particular processor, from a particular vendor, etc.), which agreements govern their use?
For all products with usage above or below a user-specified level over a user-specified time (e.g., unused for the past year) and meeting user-specified criteria (e.g., found on a particular processor, from a particular vendor, etc.), what agreements govern their use?
For all products whose maintenance contracts are within a user-specified time of cancellation or renewal and meeting user-specified criteria (e.g., found on a particular processor, from a particular vendor, etc.), what are the recent and current usage levels?
For each product for which the user has an agreement and meeting user-specified criteria (e.g., found on a particular processor, from a particular vendor, etc.), on which processors is the product installed and what are the recent and current usage levels?
For all products for which the user has an agreement and meeting user-specified criteria (e.g., from a particular vendor, etc.), which products have not been found in inventory?
For each product having a license agreement specifying a maximum number of MIPS (millions of instructions per second, a measurement of relative processing power) and meeting user-specified criteria (e.g., found on a particular processor, from a particular vendor, etc.), what is the total MIPS of the processors for which the product is installed? As used herein, MIPS is an inclusive term which also refers to MSU (million service units, CPU speed, drystone, whetstone, or any other measure of computing power.)
For each product for which the user has an agreement that specifies a particular number of processors and meeting user-specified criteria (e.g., from a particular vendor, etc.):
What is the number of processors on which it is installed, and is that number higher or lower than the agreement authorizes?
What is the number of processors on which it has been used during a user-specified period of time, and is that number higher or lower than the agreement authorizes?
For each product for which the user has an agreement that specifies that the product can be installed on one or more particular processors and meeting user-specified criteria (e.g., from a particular vendor, etc.):
On what processors is the product installed, and is any such use not authorized by the agreement?
On what processors has the product been used during a user-specified period of time, and is any such use not authorized by the agreement?
Likewise, the user would be able to be selective in his queries by optionally selecting processors, specified locations, and/or within user-specified organizational subdivisions to narrow the desired results.